
package rpg.cenario;

import java.util.ArrayList;
import rpg.desafio.Desafio;
import rpg.personagem.Personagem;
import rpg.recurso.Recurso;

/**
 *
 * @author Gean
 * 121151418
 */
public class Lugar{
  
    
    /*
     * Atributos que caracterizam um lugar
     * nome, seus suaa/seus saidas/acessos, uma breve descricão, um personagem
     * que estará fixo naquele local, recursos que poderão ou não estar lá e um desafio
     */
    private String nome;
    private Lugar[] acessos;                         // acessos do lugar, norte, sul...
    private String descricao;
    private Personagem personagem;                    // personagem fixo do lugar (Amigo ou Inimigo)
    private ArrayList<Recurso> listaDeRecursos;                 // lista de diversos recursos que podem ou nao existir em um lugar
    private Desafio desafio;                              // um desafio fixo que cada lugar terá
   
    
    public Lugar(){
        this.acessos = new Lugar[4];               // é inicializado no método construtor, ja definindo seu tamanho
        listaDeRecursos = new ArrayList<Recurso>();
    }
    
    public Lugar(String nome, String descricao){   // método construtor já é inicializado atribuindo valores aos atributos
        this.nome = nome;
        this.descricao = descricao;
        this.acessos = new Lugar[4];               // é inicializado no método construtor, ja definindo seu tamanho
        listaDeRecursos = new ArrayList<Recurso>(); 
    }
    
    public Lugar[] defineAcessos(Lugar norte, Lugar leste, Lugar sul, Lugar oeste){              // método que atribui os/as 4 acessos/saidas para o lugar
            acessos[0] = norte;          
            acessos[1] = leste;
            acessos[2] = sul;
            acessos[3] = oeste;
           
      return acessos;   
     }
    
    /*
     * Métodos gets e sets para acessar os atributos privados  
     * em outras classes
     */
    //-------------------Nome---------------------
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    
    //--------------Descricao---------------------
    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    
    //---------------Acesso-----------------------
    public Lugar getAcessos(int num){
        return acessos[num];
    }
    
    //----------------Desafio----------------------
    public Desafio getDesafio() {
        return desafio;
    }

    public void setDesafio(Desafio desafio) {
      if(this.desafio == null){
        this.desafio = desafio;
       }
    }
    
    //---------------Personagem--------------------
    public Personagem getPersonagem() {
        return personagem;
    }

    public void setPersonagem(Personagem personagem) {
      if(this.personagem == null){
        this.personagem = personagem;
      }
    }

    //-------------Recurso-------------------------
    public void addRecurso(Recurso r) {
        listaDeRecursos.add(r);
    }
    
    public Recurso pegaRecurso(int num){
        Recurso temp = listaDeRecursos.get(num);
        listaDeRecursos.remove(num);
        return temp;
    }
    
    //-------------Lista de Recursos-----------------
    public ArrayList<Recurso> getListaDeRecursos() {
        return listaDeRecursos;
    }

    public void setListaDeRecursos(ArrayList<Recurso> listaDeRecursos) {
        this.listaDeRecursos = listaDeRecursos;
    }
    
}
